package com.study.delegate.general;

import java.util.Random;

/**
 * 委派模式
 * 领导给员工分配任务、dispatchServlet、双亲委派
 * 区别与代理模式（强调功能增强）
 * 委派模式可以理解为特殊的静态代理，只强调分发，不做功能增强
 * 行为型设计模式
 *
 */
public class Delegate implements Task {
    @Override
    public void doTask() {
        System.out.println("代理执行开始....");

        Task task = null;
        if (new Random().nextBoolean()){
            task = new ConcreteA();
            task.doTask();
        }else{
            task = new ConcreteB();
            task.doTask();
        }

        System.out.println("代理执行完毕....");
    }
}
